﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;

using System.Threading.Tasks;
using SIIE_ERP.BaseDatos.Inventarios.Catalogos;

namespace SIIE_ERP.Codigo.Inventarios.Catalogos
{
    public class Listas_Precios
    {


        #region validaciones
        public string validaDatosAlta(string RFC, string UserName, string Nombre)
        {
            var db = new SIIE_ERP.BaseDatos.Inventarios.Catalogos.dbo_Cat_Listas_Precios(RFC, UserName);

            // Validacion de datos:
            if (String.IsNullOrEmpty(Nombre))
            {
                return "El campo Nombre no puede ser vacío.";
            }
            var lista = db.Get_Lista_Precios_By_Nombre(Nombre).Rows[0];
            if (Convert.ToInt32(lista["total"]) > 0)
            {
                return "Lista de Precios ya en Existencia.";
            }
            return "";
            
        }

        public string validaDatosUpdate(string RFC, string UserName, string Nombre,string list)
        {
            var db = new SIIE_ERP.BaseDatos.Inventarios.Catalogos.dbo_Cat_Listas_Precios(RFC, UserName);

            // Validacion de datos:
            if (String.IsNullOrEmpty(Nombre))
            {
                return "El campo Nombre no puede ser vacío.";
            }
            if (!Nombre.Equals(list))
            {
                var lista = db.Get_Lista_Precios_By_Nombre(Nombre).Rows[0];
                if (Convert.ToInt32(lista["total"]) > 0)
                {
                    return "Lista de Precios ya en Existencia.";
                }
            }
           
            return "";
        }
        public string validaDatosDetalle(string cantidadMinima, string Descuento)
        {
            try { Double.Parse(cantidadMinima); }
            catch (Exception)
            {
                return "El campo Cantidad minima debe ser númerico.";
            }
            try { Double.Parse(Descuento); }
            catch (Exception)
            {
                return "El campo Descuento debe ser númerico.";
            }

            if (Double.Parse(cantidadMinima) < 0)
            {
                return "El campo Precio de Lista debe ser mayor o igual a 0.";
            }
            if (Double.Parse(Descuento) < 0)
            {
                return "El campo Descuento debe ser ser mayor o igual a 0.";
            }
            return "";
        }

        #endregion

        #region Insert
        public String Insert_Lista_Precios_Articulo_Descuento(string RFC, String UserName, int Id, int Id_Articulo, string cantidadMinima, int Id_Lista_Precio, string Descuento)
        {

            var db = new SIIE_ERP.BaseDatos.Inventarios.Catalogos.dbo_Cat_Listas_Precios(RFC, UserName);

            if (db.Get_Lista_Precios_Articulo_Descuento_Cantidad(Id, Id_Articulo, Convert.ToDouble(cantidadMinima)).Rows.Count > 0)
            {
                return "Descuento ya aplicado.";

            }

            if (db.Insert_Lista_Precios_Articulo_Descuento(Id_Lista_Precio, Convert.ToDouble(cantidadMinima), Convert.ToDouble(Descuento)).Id == 1)
            {
                return "Descuento aplicado a articulo Correctamente.";
            }
            else
            {
                return " Error al agregar al articulo.";
            }
        }
        public String Insert_Lista_Precios(string RFC, string UserName, string Nombre, string Descripcion)
        {
            var db = new SIIE_ERP.BaseDatos.Inventarios.Catalogos.dbo_Cat_Listas_Precios(RFC, UserName);

            if (db.Insert_Lista_Precios(Nombre, Descripcion).Id == 1)
            {
                return "Lista de Precio agregada correctamente.";

            }
            else
            {
                return "Error al agregar Lista de Precio.";
            }
        }
        #endregion

        #region Update

        public string Update_Lista_Precios(string RFC, string UserName,int Id_Lista_Precios, string Nombre, string Descripcion)
      {
          try
          {
               var db = new SIIE_ERP.BaseDatos.Inventarios.Catalogos.dbo_Cat_Listas_Precios(RFC, UserName);
              
               if (db.Update_Lista_Precios(Id_Lista_Precios,Nombre,Descripcion).Id==1)
               {
                   return "Lista de precio actualizada correctamente.";
               }
          }
          catch (Exception)
          {

              return "Error al actualizar Lista de precio.";
          }
      return "";
      }
        #endregion

        #region DELETE

        public string Delete_Lista_Precio_By_Id(string RFC, string UserName,int Id_Lista_Precios)
        {
            try
            {
                var db = new SIIE_ERP.BaseDatos.Inventarios.Catalogos.dbo_Cat_Listas_Precios(RFC, UserName);
                var relacion = db.Get_Lista_precios_Relacionados(Id_Lista_Precios).Rows[0];
                if (Convert.ToInt32( relacion["total"]) < 1)
                {
                    db.Delete_Lista_Precios_Por_Id(Id_Lista_Precios);
                    return "Lista de Precio Eliminada Correctamente.";
                }
            }
            catch (Exception)
            {

                return "";
            }

            return "La Lista de Precio tiene relaciones y por eso no es posible borrarlo.";
        }
        #endregion







       
    }

}
